from flask import Flask
from app.settings.config import config_dict
# from common.utils.constants import EXTRA_ENV_COINFIG
import os, sys
# 项目根路径
base_path = os.path.dirname(os.path.dirname(os.path.abspath(__name__)))
# common的路径
common_path = os.path.join(base_path, 'common')
# 把该路径添加到搜索（导包）路径
sys.path.index(0, common_path)

from utils.constans import EXTRA_ENV_COINFIG

def _create_app(config_name):
    """供内部调用的创建app对象的工厂方法"""

    # 1.创建app对象
    app = Flask(__name__)
    # 加载配置类
    config_class = config_dict[config_name]  # ['dev', 'pro', 'test']
    # 2.从配置类中获取配置信息
    app.config.from_object(config_class)
    # 3.从环境变量中获取配置信息
    app.config.from_envvar(EXTRA_ENV_COINFIG)
    # 4.返回app对象
    return app

def create_app(config_name):
    """供外部模块调用的创建app的工厂方法"""
    # 1.调用内部创建app对象
    app = _create_app(config_name)

    # TODO:2.添加依赖于app拓展组件

    # TODO:3.注册蓝图对象

    return app